package com.ch;

/**
 * @author chenhong
 * @version 1.0.0
 * @ClassName 爱生气的书店老板.java
 * @Description TODO
 * @createTime 2021年02月23日 11:45:00
 */
public class 爱生气的书店老板 {
}

class Solution1052 {
    public int maxSatisfied(int[] customers, int[] grumpy, int X) {
        int len = customers.length;
        int ret = 0;
// 我们可以先将原本就满意的客户加入答案，同时将对应的 customers[i] 变为 0。
        for (int i = 0; i < len; i ++) {
            if(grumpy[i] == 0){
                ret += customers[i];
                customers[i] = 0;
            }
        }
// 之后的问题转化为：在 customers 中找到连续一段长度为 x 的子数组，使得其总和最大。这部分就是我们应用技巧所得到的客户。
        int tmp = 0 , max = 0;
        for(int r = 0,l = 0;r<len;r++){
            tmp += customers[r];
            if(r - l + 1 > X)
                tmp -= customers[l++];
            max = Math.max(max,tmp);
        }
        return ret + max;
    }
}
